package com.power.sifa.approve.api;

import com.plf.common.domain.ResponseDTO;
import com.power.sifa.approve.model.Apl_applicant;
import com.power.sifa.approve.model.pageInfo.Apl_applicantPageInfo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 申请人 Feign
 */
public interface IApl_applicantFeign {

    /**
     * 申请人分页列表
     */
    @PostMapping("/apl_applicant/list")
    ResponseDTO list(@RequestBody Apl_applicantPageInfo apl_applicantPageInfo);

    /**
     * 查看申请人
     */
    @GetMapping("/apl_applicant/view")
    ResponseDTO view(@RequestParam("id") String id);

    /**
     * 删除申请人
     */
    @PostMapping("/apl_applicant/delete")
    ResponseDTO delete(@RequestParam("id") String id);

    ///**
    // * 查看申请人 复合主键使用
    // */
    //@PostMapping("/apl_applicant/viewByPK")
    //ResponseDTO viewByPK(@RequestBody Apl_applicant.Apl_applicantPK pk);

    /**
     * 修改或保存申请人
     */
    @PostMapping("/apl_applicant/save")
    ResponseDTO save(@RequestBody Apl_applicant apl_applicant);

    ///**
    // * 删除申请人 复合主键使用
    // */
    //@PostMapping("/apl_applicant/deleteByPK")
    //ResponseDTO deleteByPK(@RequestBody Apl_applicant.Apl_applicantPK pk);

    /**
     * 批量删除申请人
     */
    @PostMapping("/apl_applicant/batchDel")
    ResponseDTO batchDel(@RequestParam("ids") String ids);

    /**
     * 导出excel
     */
    @PostMapping("/apl_applicant/output")
    void output(HttpServletResponse response, @RequestBody Apl_applicantPageInfo apl_applicantPageInfo);

    /**
     * 导出excel模板
     */
    @PostMapping("/apl_applicant/exportExcelTemplate")
    void exportExcelTemplate(HttpServletResponse response);

    /**
     * 导入excel
     */
    @PostMapping("/apl_applicant/importExcel")
    ResponseDTO importExcel(@RequestBody MultipartFile file) throws IOException;

    /**
     * 根据申请号查询申请人和代理人
     *
     * @param applyid
     * @return
     */
    @PostMapping("/apl_applicant/getAppperAndThiperByApplyid")
    ResponseDTO getAppperAndThiperByApplyid(String applyid);

    /**
     * 申请人查询-按照类型区分
     */
    @PostMapping("/apl_applicant/getApplicantWithGroup")
    ResponseDTO getApplicantWithGroup(@RequestParam("applyid") String applyid);

    /**
     * 申请人查询-全部查询不分页
     */
    @PostMapping("/apl_applicant/getApplicantByApplyid")
    ResponseDTO getApplicantByApplyid(@RequestParam("applyid") String applyid);


    /**
     * 申请人名称查询
     */
    @PostMapping("/apl_applicant/searchByName")
    ResponseDTO searchByName(@RequestParam("name") String name);

    /**
     * 查询申请人关联的代理人列表
     * @param applyid
     * @return
     */
    @PostMapping("/getApplicantAndAgent/searchByName")
    ResponseDTO getApplicantAndAgent(String applyid);


    /**
     * 删除附件id
     * @param id 主键id
     * @param type 类型：0：身份证明 1:身份证明书，2：第三人证明材料
     * @param attachId 附件id
     * @return
     * @return
     */
    @PostMapping("/apl_applicant/deleteAttachId")
    ResponseDTO deleteAttachId(@RequestParam("id") String id, @RequestParam("type") Integer type, @RequestParam(
            "attachid") String attachId);

    /**
     * 更新附件id
     * @param id 主键id
     * @param type 类型：0：身份证明 1:身份证明书，2：第三人证明材料
     * @param attachId 附件id
     * @return
     */
    @PostMapping("/apl_applicant/updateAttachId")
    ResponseDTO updateAttachId(@RequestParam("id") String id, @RequestParam("type") Integer type , @RequestParam(
            "attachid") String attachId);


    /**
     * 查询申请人和第三人
     * @param applyid
     * @return
     */
    @PostMapping("/apl_applicant/getApplicantAndThirdList")
    ResponseDTO getApplicantAndThirdList(@RequestParam("applyid") String applyid);


    /**
     * 网申端申请人查询待处理列表
     */
    @PostMapping("/apl_applicant/getCardnoPendingList")
    ResponseDTO getCardnoPendingList(@RequestBody Apl_applicantPageInfo  pageInfo);

    /**
     * 网申端申请人查询已处理列表
     */
    @PostMapping("/apl_applicant/getCardnoProcessedList")
    ResponseDTO getCardnoProcessedList(@RequestBody Apl_applicantPageInfo  pageInfo);

}
